#pragma once

class CPunt3D{
	private:
		float x, y, z;	// Coordenada del punt.

	public:

	// Constructors
	CPunt3D( void );
	CPunt3D( const CPunt3D & );
	CPunt3D( float, float, float );
	~CPunt3D( void );

	// Escriptura de dades
	void setPunt3D( CPunt3D & );
	void setPunt3D( float, float, float );
	void setPunt3DX( float );
	void setPunt3DY( float );
	void setPunt3DZ( float );

	// Lectura de dades
	CPunt3D & getPunt3D( void );
	float getPunt3DX( void );
	float getPunt3DY( void );
	float getPunt3DZ( void );


	// Operacions
	CPunt3D operator + ( CPunt3D );
	CPunt3D operator += ( CPunt3D );
	CPunt3D operator ++ ( void );

	CPunt3D operator - ( CPunt3D );
	CPunt3D operator -= ( CPunt3D );
	CPunt3D operator -- ( void );

	float operator * ( CPunt3D );	// Producte escalar
	CPunt3D operator / ( float );
	CPunt3D operator /= ( float );

	CPunt3D doVectorial( CPunt3D );		// Producte vectorial ( no modifica this )
	CPunt3D doVectorialMOD( CPunt3D );	// Producte vectorial ( modifica this )

	CPunt3D doNormalitzar( void );		// Fa la normal del CPunt3D.
};